package service

import (
	"errors"
	"go-admin/internal/model"
	mr "go-admin/internal/model/api/model_request"
	"go-admin/pkg/app"
)

func (s *Service) CreateDictItem(param *mr.CreateDictItemRequest) (string, error) {
	// 根据字典名称和字典type是否重复
	dictItem, err := s.dao.GetDictByDictItemLabelAndValueByDictType(param.Label, param.Value, param.DictType)
	if err != nil {
		return dictItem.Id, err
	}
	// 判断字典是否存在
	if dictItem.Id != "" {
		return dictItem.Id, errors.New("字典项已存在")
	}
	insertId, err := s.dao.CreateDictItem(param)
	if err != nil {
		return "", err
	}
	return insertId, nil
}

func (s *Service) CountDictItem(param *mr.ListDictItemRequest) (int, error) {
	return s.dao.CountDictItem(param)
}

func (s *Service) GetDictListItem(param *mr.ListDictItemRequest, pager *app.Pager) ([]*model.DictItem, error) {
	return s.dao.GetDictListItem(param, pager.PageIndex, pager.PageSize)
}

func (s *Service) GetDictItemById(id string) (*model.DictItem, error) {
	dictItem, err := s.dao.GetDictItemById(id)
	if err != nil {
		return nil, err
	}
	// 判断是否存在
	if dictItem.Id == "" {
		return nil, err
	}
	return dictItem, nil
}

func (s *Service) UpdateDictItem(param *mr.UpdateDictItemRequest) error {
	return s.dao.UpdateDictItem(param)
}

func (s *Service) DeleteDictItemS(ids []string) error {
	return s.dao.DeleteDictItemS(ids)
}

func (s *Service) DictItemList(param *mr.DictItemListRequest) ([]*model.DictItem, error) {
	return s.dao.DictItemList(param.DictType)
}
